<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database tables serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) 1 Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>460508</td><th>4.08x</th><td>2622958</td><td>9744777</td><td>12367735</td><td>123677.35</td><th>6.47x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>344645</td><th>3.06x</th><td>8005441</td><td>20977105</td><td>28982546</td><td>289825.46</td><th>15.16x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>118407</td><th>1.05x</th><td>7605737</td><td>3301276</td><td>10907013</td><td>109070.13</td><th>5.70x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>346173</td><th>3.07x</th><td>6004185</td><td>14526348</td><td>20530533</td><td>205305.33</td><th>10.74x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>112762</td><th>1x</th><td>854291</td><td>1057807</td><td>1912098</td><td>19120.98</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>247146</td><th>2.19x</th><td>2884800</td><td>2822298</td><td>5707098</td><td>57070.98</td><th>2.98x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>289323</td><th>2.57x</th><td>1818271</td><td>4734331</td><td>6552602</td><td>65526.02</td><th>3.43x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>9196</td><td>14032</td><td>23228</td><td>232.28</td><th>4.75x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>7280</td><td>27753</td><td>35033</td><td>350.33</td><th>7.16x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>18253</td><td>18876</td><td>37129</td><td>371.29</td><th>7.59x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>10989</td><td>29321</td><td>40310</td><td>403.1</td><th>8.24x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>2203</td><td>2688</td><td>4891</td><td>48.91</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>3710</td><td>4525</td><td>8235</td><td>82.35</td><th>1.68x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>622</td><th>1.63x</th><td>2712</td><td>7680</td><td>10392</td><td>103.92</td><th>2.12x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>131980</td><td>556395</td><td>688375</td><td>6883.75</td><th>4.01x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>176184</td><td>850905</td><td>1027089</td><td>10270.89</td><th>5.99x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>318245</td><td>294078</td><td>612323</td><td>6123.23</td><th>3.57x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>253815</td><td>548188</td><td>802003</td><td>8020.03</td><th>4.67x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>76028</td><td>95525</td><td>171553</td><td>1715.53</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>96375</td><td>141852</td><td>238227</td><td>2382.27</td><th>1.39x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>20928</td><th>1.68x</th><td>111181</td><td>286434</td><td>397615</td><td>3976.15</td><th>2.32x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>28152</td><td>83363</td><td>111515</td><td>1115.15</td><th>4.48x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>55271</td><td>177371</td><td>232642</td><td>2326.42</td><th>9.35x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>85712</td><td>55037</td><td>140749</td><td>1407.49</td><th>5.66x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>55052</td><td>148651</td><td>203703</td><td>2037.03</td><th>8.18x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>11374</td><td>13515</td><td>24889</td><td>248.89</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>30987</td><td>45356</td><td>76343</td><td>763.43</td><th>3.07x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>5709</td><th>1.45x</th><td>24180</td><td>59746</td><td>83926</td><td>839.26</td><th>3.37x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>0x</th><td>17418</td><td>71248</td><td>88666</td><td>886.66</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>0x</th><td>25201</td><td>107110</td><td>132311</td><td>1323.11</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>0x</th><td>56361</td><td>54994</td><td>111355</td><td>1113.55</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>0x</th><td>57572</td><td>119738</td><td>177310</td><td>1773.1</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>980</td><th>0x</th><td>10933</td><td>-1</td><td>10932</td><td>109.32</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>0x</th><td>16479</td><td>21787</td><td>38266</td><td>382.66</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1716</td><th>0x</th><td>11349</td><td>25296</td><td>36645</td><td>366.45</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>0x</th><td>2345021</td><td>6620608</td><td>8965629</td><td>89656.29</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>0x</th><td>3342575</td><td>11499340</td><td>14841915</td><td>148419.15</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>0x</th><td>3784218</td><td>3187245</td><td>6971463</td><td>69714.63</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>0x</th><td>6275159</td><td>13465096</td><td>19740255</td><td>197402.55</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>60253</td><th>0x</th><td>917823</td><td>-1</td><td>917822</td><td>9178.22</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>0x</th><td>2707313</td><td>2968953</td><td>5676266</td><td>56762.66</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>127182</td><th>0x</th><td>1179518</td><td>-1</td><td>1179517</td><td>11795.17</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>2352740</td><td>8742545</td><td>11095285</td><td>110952.85</td><th>6.80x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>7658685</td><td>19416182</td><td>27074867</td><td>270748.67</td><th>16.59x</th></tr><tr class='best-size'><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>6989497</td><td>2747806</td><td>9737303</td><td>97373.03</td><th>5.97x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>5542549</td><td>13449002</td><td>18991551</td><td>189915.51</td><th>11.64x</th></tr><tr class='best-time'><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>725574</td><td>906042</td><td>1631616</td><td>16316.16</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>2701161</td><td>2550285</td><td>5251446</td><td>52514.46</td><th>3.22x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>252061</td><th>2.92x</th><td>1623342</td><td>4231155</td><td>5854497</td><td>58544.97</td><th>3.59x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>0x</th><td>98459</td><td>415831</td><td>514290</td><td>5142.9</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>0x</th><td>140781</td><td>747615</td><td>888396</td><td>8883.96</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>0x</th><td>223171</td><td>217224</td><td>440395</td><td>4403.95</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>0x</th><td>236148</td><td>806553</td><td>1042701</td><td>10427.01</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>4044</td><th>0x</th><td>30711</td><td>-1</td><td>30710</td><td>307.1</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>0x</th><td>81743</td><td>130429</td><td>212172</td><td>2121.72</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>11103</td><th>0x</th><td>61292</td><td>-1</td><td>61291</td><td>612.91</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>0x</th><td>2842</td><td>7100</td><td>9942</td><td>99.42</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>0x</th><td>4668</td><td>10886</td><td>15554</td><td>155.54</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>0x</th><td>11269</td><td>12447</td><td>23716</td><td>237.16</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>159</td><th>0x</th><td>4069</td><td>11673</td><td>15742</td><td>157.42</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>54</td><th>0x</th><td>825</td><td>-1</td><td>824</td><td>8.24</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>0x</th><td>1417</td><td>1327</td><td>2744</td><td>27.44</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>143</td><th>0x</th><td>1037</td><td>4442</td><td>5479</td><td>54.79</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>2802</td><td>6504</td><td>9306</td><td>93.06</td><th>4.71x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>5303</td><td>11033</td><td>16336</td><td>163.36</td><th>8.28x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>10851</td><td>11786</td><td>22637</td><td>226.37</td><th>11.47x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>3619</td><td>10542</td><td>14161</td><td>141.61</td><th>7.17x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>900</td><td>1074</td><td>1974</td><td>19.74</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>3245</td><td>3416</td><td>6661</td><td>66.61</td><th>3.37x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>180</td><th>1.64x</th><td>1188</td><td>3362</td><td>4550</td><td>45.5</td><th>2.30x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>55575</td><td>236058</td><td>291633</td><td>2916.33</td><th>5.38x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>64628</td><td>292929</td><td>357557</td><td>3575.57</td><th>6.60x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>108939</td><td>97448</td><td>206387</td><td>2063.87</td><th>3.81x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>82273</td><td>210637</td><td>292910</td><td>2929.1</td><th>5.40x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>26980</td><td>27230</td><td>54210</td><td>542.1</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>36032</td><td>48180</td><td>84212</td><td>842.12</td><th>1.55x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>6822</td><th>1.65x</th><td>37356</td><td>91675</td><td>129031</td><td>1290.31</td><th>2.38x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 100 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>42513</td><td>105880</td><td>148393</td><td>1483.93</td><th>6.46x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>38090</td><td>200932</td><td>239022</td><td>2390.22</td><th>10.41x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>74240</td><td>76245</td><td>150485</td><td>1504.85</td><th>6.55x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>55888</td><td>130007</td><td>185895</td><td>1858.95</td><th>8.09x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>11232</td><td>11733</td><td>22965</td><td>229.65</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>13290</td><td>28684</td><td>41974</td><td>419.74</td><th>1.83x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>3001</td><th>2.62x</th><td>18312</td><td>54279</td><td>72591</td><td>725.91</td><th>3.16x</th></tr>
</tbody>
</table>
</body>
</html>

